7F08CB10:	C1640	parse inventory backward
	accepts: A0=p->right weapon#, A1=p->left weapon#, A2=1 if switching allowed
ADDIU	SP,SP,FFD8
LUI	V1,8008
LW	V1,A0B0 (V1)	;V1=p->BONDdata
SW	RA,0024 (SP)
SW	S3,0020 (SP)
SW	S2,001C (SP)
SW	S1,0018 (SP)
SW	S0,0014 (SP)
SW	A0,0028 (SP)	;SP+28=A0: p->right weapon
SW	A1,002C (SP)	;SP+2C=A1: p->left weapon
LW	V0,11E0 (V1)	;V0=p->inventory
OR	S2,A2,R0	;S2=A2: mode?
LW	S1,0000 (A0)	;S1=cur. right weapon
OR	T6,A0,R0	;T6=A0: p->right weapon
LW	S3,0000 (A1)	;S3=cur. left weapon
BEQ	V0,R0,7F08CC58	;if inventory invalid, branch
OR	T7,A1,R0	;T7=A1: p->left weapon
LW	S0,0010 (V0)	;S0=p->previous item in cycle
LW	V0,0000 (S0)	;V0=type of entry
ADDIU	AT,R0,0001
BNEL	V0,AT,7F08CBC4	;branch if not a right-handed weapon
ADDIU	AT,R0,0003
//7F08CB68	C1698	right-handed weapon
LW	A0,0004 (S0)	;A0=right weapon
SLTI	AT,A0,0021
BEQ	AT,R0,7F08CC2C	;branch if a gadget
NOP
SLT	AT,A0,S1
BNEZ	AT,7F08CB94	;branch if weapon code < cur.
NOP
BNE	S1,A0,7F08CC2C	;branch if not same item
NOP
BLEZ	S3,7F08CC2C	;branch if left weapon invalid
NOP
//7F08CB94	C16C4	set new right weapon
BEQL	S2,R0,7F08CBB8	;don't set if mode=0
OR	S1,A0,R0	;S1=A0: new right weapon
JAL	7F05E05C	;TRUE if ammo for right weapon
NOP
BEQ	V0,R0,7F08CC2C	;branch if you don't have ammo for it
LUI	V1,8008
LW	V1,A0B0 (V1)	;V1=p->BONDdata
LW	A0,0004 (S0)	;A0=right weapon
OR	S1,A0,R0	;S1=right weapon
//7F08CBB8
BEQ	R0,R0,7F08CC58
OR	S3,R0,R0	;S3=0: NULL left weapon
//7F08CBC0:	double weapon sets
ADDIU	AT,R0,0003
BNE	V0,AT,7F08CC2C	;branch if not a double weapon set
NOP
LW	A0,0004 (S0)	;A0=right weapon
SLT	AT,A0,S1
BNEZ	AT,7F08CBF4	;branch if right weapon < cur
NOP
BNE	S1,A0,7F08CC2C
NOP
LW	T8,0008 (S0)	;T8=left weapon
SLT	AT,T8,S3
BEQ	AT,R0,7F08CC2C
NOP
//7F08CBF4	C1724	set new double weapon set
BEQ	S2,R0,7F08CC18	;skip if mode =0
NOP
JAL	7F05E05C	;TRUE if ammo for right weapon
NOP
BNEZ	V0,7F08CC18	;branch if no ammo for weapon
NOP
JAL	7F05E05C	;TRUE if ammo for left weapon
LW	A0,0008 (S0)	;A0=left weapon
BEQ	V0,R0,7F08CC2C	;branch if no ammo for weapon
//7F08CC18
LUI	V1,8008
LW	S1,0004 (S0)	;S1=right weapon
LW	S3,0008 (S0)	;S3=left weapon
BEQ	R0,R0,7F08CC58
LW	V1,A0B0 (V1)	;V1=p->BONDdata
//7F08CC2C	
LUI	V1,8008
LW	V1,A0B0 (V1)	;V1=p->BONDdata
LW	T9,11E0 (V1)	;T9=p->inventory
BNE	S0,T9,7F08CC50	;continue if more entries to check
NOP
BNEL	S2,R0,7F08CC5C	;branch if mode flag=1 (writable)
LW	T0,11EC (V1)	;T0=all guns flag
ADDIU	S1,R0,03E8	;S1=03E8
ADDIU	S3,R0,03E8	;S3=03E8
BEQ	R0,R0,7F08CB58
LW	S0,0010 (S0)	;S0=p->previous item
//7F08CC58:	all guns stuff
LW	T0,11EC (V1)	;T0=all guns flag
LW	T2,002C (SP)	;T2=p->left weapon
BEQL	T0,R0,7F08CE48	;branch if flag not set
LW	T6,0028 (SP)
LW	T3,0000 (T2)	;T3=left weapon
LW	T1,0028 (SP)	;T1=p->right weapon
ADDIU	V1,R0,0021	;V1=number of valid weapons
BNEZ	T3,7F08CCE4	;branch if doubles
LW	S0,0000 (T1)	;S0=right weapon
//7F08CC7C	C17AC	right-handed weapon
ADDIU	T4,S0,0020	;T4=same as wep#-1
DIV	T4,V1
MFHI	S0		;S0=weapon-1 
ADDIU	T5,S0,0020	;T5=weapon-1
BNEZ	V1,7F08CC98
NOP
BREAK
//7F08CC98
ADDIU	AT,R0,FFFF
BNE	V1,AT,7F08CCB0
LUI	AT,8000
BNE	T4,AT,7F08CCB0
NOP
BREAK
//7F08CCB0
BNEZ	S0,7F08CCE4
NOP
DIV	T5,V1
MFHI	S0
BNEZ	V1,7F08CCCC
NOP
BREAK
//7F08CCCC
ADDIU	AT,R0,FFFF
BNE	V1,AT,7F08CCE4
LUI	AT,8000
BNE	T5,AT,7F08CCE4
NOP
BREAK
//7F08CCE4
BNE	S0,S1,7F08CD60
NOP
JAL	7F09A464	;V0=#players
NOP
ADDIU	AT,R0,0001
BNE	V0,AT,7F08CE44	;branch if multi
OR	A0,S0,R0
JAL	7F05E0B4
LUI	A1,0010
BEQL	V0,R0,7F08CE48
LW	T6,0028 (SP)
BEQL	S2,R0,7F08CD2C
LW	T6,0028 (SP)
JAL	7F05E05C
OR	A0,S0,R0
BEQL	V0,R0,7F08CE48
LW	T6,0028 (SP)
LW	T6,0028 (SP)
LW	T8,002C (SP)
LW	T7,0000 (T6)
BNEL	S0,T7,7F08CD4C
SLT	AT,S3,S0
LW	T9,0000 (T8)
SLT	AT,S0,T9
BEQ	AT,R0,7F08CE44
SLT	AT,S3,S0
BEQL	AT,R0,7F08CE48
LW	T6,0028 (SP)
OR	S1,S0,R0
BEQ	R0,R0,7F08CE44
OR	S3,S0,R0
BEQ	S2,R0,7F08CD78
NOP
JAL	7F05E05C
OR	A0,S0,R0
BEQ	V0,R0,7F08CDD4
ADDIU	V1,R0,0021
JAL	7F09A464
NOP
ADDIU	AT,R0,0001
BNE	V0,AT,7F08CDC8
OR	A0,S0,R0
JAL	7F05E0B4
LUI	A1,0010
BEQ	V0,R0,7F08CDC8
LW	T0,0028 (SP)
LW	T1,0000 (T0)
LW	T2,002C (SP)
OR	S1,S0,R0
BNE	S0,T1,7F08CDC0
NOP
LW	T3,0000 (T2)
SLT	AT,S0,T3
BEQL	AT,R0,7F08CDCC
OR	S1,S0,R0
//7F08CDC0
BEQ	R0,R0,7F08CE44
OR	S3,S0,R0
//7F08CDC8
OR	S1,S0,R0
BEQ	R0,R0,7F08CE44
OR	S3,R0,R0
//7F08CDD4
ADDIU	T4,S0,0020
DIV	T4,V1
MFHI	S0
BNEZ	V1,7F08CDEC
NOP
BREAK
//7F08CDEC
ADDIU	AT,R0,FFFF
BNE	V1,AT,7F08CE04
LUI	AT,8000
BNE	T4,AT,7F08CE04
NOP
BREAK
//7F08CE04
BNEZ	S0,7F08CCE4
NOP
ADDIU	T5,S0,0020
DIV	T5,V1
MFHI	S0
BNEZ	V1,7F08CE24
NOP
BREAK
//7F08CE24
ADDIU	AT,R0,FFFF
BNE	V1,AT,7F08CE3C
LUI	AT,8000
BNE	T5,AT,7F08CE3C
NOP
BREAK
//7F08CE3C
BEQ	R0,R0,7F08CCE4
NOP
//7F08CE44	C1974	Porygon, return!
LW	T6,0028 (SP)
SW	S1,0000 (T6)
LW	T7,002C (SP)
SW	S3,0000 (T7)
LW	RA,0024 (SP)
LW	S3,0020 (SP)
LW	S2,001C (SP)
LW	S1,0018 (SP)
LW	S0,0014 (SP)
JR	RA
ADDIU	SP,SP,0028
